# -*- coding:utf-8 -*-
"""
@Time:  2021/7/29 9:33
@Auth:  Mrs.Gou 
@Function:  列表-list
"""
# 定义一个空列表
my_list1 = []
# 定义一个有数据的列表
my_list2 = ['a', 'b', 'c', 'd', 'bb']
# 下标取值
print(my_list2[0])
# 更新
my_list2[1] = 'bb'
print(my_list2)
# 按值删除：删除第一个出现的bb值这个元素
my_list2.remove('bb')
print(my_list2)
# 按下标删除
del my_list2[0]
print(my_list2)
# 在末尾添加
my_list2.append('e')
print(my_list2)
# 在指定位置上插入添加
my_list2.insert(1, 'a')
print(my_list2)


# 摒弃了数组，只保留列表
# 定义
name = []
print(id(name))
name = ['will', 'roy', '土匪']
print(name)

# 下面是定义了6个元素的列表，可以把每一个元素看成是用变量来存的。
# name[0] name[1]....
# Python列表可以存储不同数据类型的数
name = ['will', 'roy', '土匪', 1, True, 1.1]
print(name)

# 增
# 末尾添加
name.append('gougou')
print(name)
# 指定位置添加
# 下标，从0开始，到列表长度-1  左闭右开原则的原因-->[开始,结束)等同于 0 <= i < 100
name.insert(1, '大宝')
name.insert(3, '大宝')
print(name)

# 删  如果列表中有两个大宝，那么删除的是第一个大宝
name.remove('大宝')
print(name)
# 下标删除的时候，下标不能越界
del name[1]
print(name)
# 清空
# name.clear()
# print(name)
#
# name.pop(1)
# print(name)


# 更新
# 返回None，append是一个函数，功能是往列表中插入元素，函数是有返回值的，name = 返回操作之后的结果，结果为None，返回也就是None
# 所以不能赋值
# name = name.append('aaa')
# print(name)
name[2] = '土匪老师'
print(name)
print(id(name))
name1 = name.copy()
print(name1)
print(id(name1))

# 列表的拼接
name2 = ['x', 'y']
name1 += name2
print(name1)

# 截取 开始位置，结束位置，左闭右开
print(name1[1:4])
print(name1[:4])
print(name1[4:])

# 反转
print(name1[::-1])
# 列表截取，有三个参数，start、end、step
# 正序
print(name1[0:len(name1):1])
# 反转
print(name1[len(name1)::-1])
# 偶数截取
print(name1[1:len(name1):2])
# 奇数截取
print(name1[0:len(name1):2])

# 查 ： 取值
print(name1[1])
print(name1.__getitem__(1))

# 遍历
# 下标遍历
height = [111, 123, 122, 167, 164, 145]
# 每一个人的很高都要加1cm
for i in range(len(height)):
    height[i] += 1
print(height)

# 成员遍历 只能读取元素，不能操作元素
for h in height:
    h += 1
    print(h)
print(height)
